﻿using System;
using System.Collections.Generic;
using System.IO;

namespace NExplorer
{
	public interface IExplorerService : IService
	{
		event EventHandler		SelectedItemsChanging;
		event EventHandler		SelectedItemsChanged;
		event EventHandler		CurrentDirectoryChanging;
		event EventHandler		CurrentDirectoryChanged;

		IList<FileSystemInfo>	SelectedItems { get; set; }

		/// <summary>
		/// The current directory or null when 'Computer' is selected.
		/// </summary>
		DirectoryInfo			CurrentDirectory { get; }

		/// <summary>
		/// Indicates which file types are currently selected (including directories).
		/// </summary>
		SelectionInfo			SelectionInfo { get; }
		void					UpdateColumnItem(Guid directoryId, int columnId, FileSystemInfo fileSystemInfo, ColumnItemData data);

		/// <summary>
		/// Navigates to a directory, launches the given application or starts the application associated with the file. 
		/// A null argument navigates to Computer.
		/// </summary>
		/// <param name="fileSystemInfo"></param>
		void					NavigateTo(FileSystemInfo fileSystemInfo);
		void					NavigateBack();
		void					NavigateForward();
		bool					CanNavigateBack { get; }
		bool					CanNavigateForward { get; }
		void					Refresh();
	}
}
